From 65216239a3f57f0863811dd3572c48fd1f0eda35 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Mon, 11 Jun 2007 13:59:48 -0600 Subject: [PATCH] [IA64] create free_irq() This isn't well tested, since it's not likely to get called, but it is required to build. Signed-off-by: Alex Williamson --- xen/arch/ia64/xen/irq.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/xen/arch/ia64/xen/irq.c b/xen/arch/ia64/xen/irq.c index 079f445def..02cb7e9c76 100644 --- a/xen/arch/ia64/xen/irq.c +++ b/xen/arch/ia64/xen/irq.c @@ -281,6 +281,30 @@ int setup_irq(unsigned int irq, struct irqaction * new) return res; } +void free_irq(unsigned int irq) +{ + unsigned int vec; + unsigned long flags; + irq_desc_t *desc; + + /* Get vector for IRQ. */ + if (acpi_gsi_to_irq(irq, &vec) < 0) + return; + + desc = irq_descp(vec); + + spin_lock_irqsave(&desc->lock, flags); + clear_bit(vec, ia64_xen_vector); + desc->action = NULL; + desc->depth = 1; + desc->status |= IRQ_DISABLED; + desc->handler->shutdown(vec); + spin_unlock_irqrestore(&desc->lock, flags); + + while (desc->status & IRQ_INPROGRESS) + cpu_relax(); +} + /* * HANDLING OF GUEST-BOUND PHYSICAL IRQS */ -- 2.30.2